Beralih ke Produksi: Pola Pikir Pengembangan
Modul terakhir ini menghubungkan celah antara penelitian yang sukses—di mana kita mencapai akurasi tinggi dalam sebuah catatan—dan eksekusi yang andal. Pengembangan adalah proses krusial dalam mengubah model PyTorch menjadi layanan minimal, layanan mandiriyang mampu memberikan prediksi secara efisien kepada pengguna akhir dengan latensi rendah dan ketersediaan tinggi.
1. Perubahan Pola Pikir Produksi
Lingkungan eksploratif dari catatan Jupyter bersifat berbasis status dan rapuh untuk penggunaan produksi. Kita harus merefaktor kode kita dari skrip eksploratif menjadi komponen terstruktur dan modular yang sesuai untuk permintaan bersamaan, optimasi sumber daya, serta integrasi mulus ke dalam sistem yang lebih besar.
Inferensi Latensi Rendah:Mencapai waktu prediksi secara konsisten di bawah ambang batas target (misalnya, $50\text{ms}$), sangat penting untuk aplikasi waktu nyata.
Ketersediaan Tinggi:Merancang layanan agar dapat diandalkan, tanpa status, dan mampu pulih dengan cepat dari kegagalan.
Reproduktibilitas:Menjamin bahwa model dan lingkungan yang diimplementasikan (dependensi, bobot, konfigurasi) persis sama dengan hasil penelitian yang telah divalidasi.
Fokus: Layanan Model
Alih-alih mengimplementasikan seluruh skrip pelatihan, kita mengimplementasikan pembungkus layanan minimal dan mandiri. Layanan ini hanya perlu menangani tiga tugas: memuat artefak model yang dioptimalkan, menerapkan pra-pemrosesan input, dan menjalankan proses maju untuk mengembalikan prediksi.
TERMINALbash — uvicorn-service
> Siap. Klik "Simulasikan Alur Pengembangan" untuk menjalankan.
>
INSPEKTOR ARTIFAK Hidup
Simulasikan alur untuk melihat artefak produksi yang dimuat.
Pertanyaan 1
Fitur apa dari catatan Jupyter yang membuatnya tidak cocok untuk pengembangan produksi?
Pertanyaan 2
Apa tujuan utama mengonversi model PyTorch ke TorchScript atau ONNX sebelum pengembangan?
Pertanyaan 3
Saat merancang API produksi, kapan bobot model harus dimuat?
Tantangan: Menentukan Layanan Minimal
Rancang persyaratan struktural untuk layanan latensi rendah.
Anda perlu mengimplementasikan model klasifikasi gambar yang kompleks ($1\text{GB}$) yang membutuhkan pra-pemrosesan gambar khusus. Layanan ini harus menangani $50$ permintaan per detik.
Langkah 1
Untuk memastikan throughput tinggi dan latensi rata-rata rendah, apa perubahan struktural paling kritis yang dibutuhkan untuk skrip Python?
Solusi:
Refaktor kode menjadi modul terpisah (Pra-pemrosesan, Definisi Model, Pengecekan Inferensi) dan pastikan seluruh proses dikemas untuk kontainerisasi.
Refaktor kode menjadi modul terpisah (Pra-pemrosesan, Definisi Model, Pengecekan Inferensi) dan pastikan seluruh proses dikemas untuk kontainerisasi.
Langkah 2
Apa artefak minimum yang diperlukan untuk dikirim, selain bobot yang dilatih?
Solusi:
Definisi kode/kelas yang digunakan untuk pra-pemrosesan dan definisi arsitektur model, diserialisasi dan dikaitkan dengan bobot.
Definisi kode/kelas yang digunakan untuk pra-pemrosesan dan definisi arsitektur model, diserialisasi dan dikaitkan dengan bobot.